#include<iostream>
#include"Matrix.h"

using namespace std;

int main(int argc,char** argv){
    Matrix3f Identity(1, 0, 0,
                      0, 1, 0,
                      0, 0, 1);
    cout << "Creating the Identity:" << endl;
    Identity.print();
    cout << "Is Identity a square?" << Identity.is_square() << endl;
    srand((unsigned)time(0));
    Matrix3f A, B;
    cout << "Creating a Matirx A:" << endl;
    A.print();
    cout << "Creating a Matirx B:" << endl;
    B.print();
    cout << "A*B = " << endl;
    Matrix<float> C = A * B;
    C.print();

    ColVector<float> Col(4);
    RowVector<float> Row(4);
    for (int i = 0; i < 4;i++)
    {
        Col[i] = rand() / float(RAND_MAX);
        Row[i] = rand() / float(RAND_MAX);
    }
    cout << "Creating a ColVector:" << endl;
    Col.print();

    cout << "Creating a RowVector:" << endl;
    Row.print();
    cout << "Row*Col: " << Row * Col << endl;
    cout << "Col*Row: " << endl;
    (Col * Row).print();
    cout << "Col*Col: " << Col * Col << endl;
    cout << "Row*Row: " << Row * Row << endl;
    Matrix2f Identity_2(1, 0,
                        0, 1);
    cout << "Trying I_2*A: " << endl;
    (Identity_2 * A).print();
    cout << "Trying getting Col[4] :" << Col[4] << endl;
    return 0;
}